// src/router/dynamicRoutes.js
// 将菜单数据转换为路由对象
export function generateDynamicRoutes(menuList) {
    // 检查菜单列表是否为数组，如果不是则返回空数组
    if (!Array.isArray(menuList)) {
        console.error('菜单列表必须是一个数组');
        return [];
    }

    return menuList.map(menu => {
        // 验证每个菜单项是否包含必要的属性
        if (!menu.path || !menu.name || !menu.component) {
            console.error('菜单项缺少必要的属性（path、name 或 component）:', menu);
            return null;
        }

        const route = {
            path: menu.path,
            name: menu.name,
            // 动态导入组件，使用错误处理
            component: () => import(`@/${menu.component}.vue`).catch(error => {
                console.error(`加载组件 ${menu.component} 时出错:`, error);
                // 可以返回一个默认的错误组件，这里简单返回 null
                return null;
            }),
            meta: {
                ...menu.meta,
                requiresAuth: true
            }
        };

        if (menu.children && Array.isArray(menu.children) && menu.children.length > 0) {
            // 递归生成子路由
            const childrenRoutes = generateDynamicRoutes(menu.children);
            // 过滤掉无效的子路由
            route.children = childrenRoutes.filter(child => child!== null);
        }

        return route;
    }).filter(route => route!== null); // 过滤掉无效的路由
}